package com.berchen.lock;

import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class RedisDistributedLock {

    @Autowired
    private RedissonClient redissonClient;

    /**
     * 业务逻辑代码 该业务逻辑在分布式系统中也是安全的 加了分布式锁
     */
    public void test(){
        RLock rLock=redissonClient.getLock("redis-lock-key");   // 拿到分布式锁的（通过KEY）
        try{
            rLock.lock();   // 加锁 30秒过期默认，如果30秒之后该业务没有跑完 那么会自动续期

            // 业务逻辑
        }finally {
            rLock.unlock(); // 解锁
        }
    }
}
